자바 1.8 이상 설치
Firebase Emulator 환경 설정을 위해 다음을 입력한다.
firebase init emulators
나오는 안내에 따라 프로젝트를 설정하고, emulate 하려는 firebase 기능을 선택한다.
각 기능마다 포트를 지정해준다.
Firebase emulator(이하 에뮬레이터)를 시작하려면 다음을 입력한다.
firebase emulators:start
그러면 다음과 같이 아까 설정한 포트의 로컬 주소로 Web GUI를 이용할 수 있다.
열면 다음과 같은 창이 나와서 로컬 환경에서 firebase를 이용할 수 있다.
문제는 에뮬레이터가 실행될 때마다 데이터가 없다는 점이다
다음 npm 패키지를 이용할 것이다.
npm install -g node-firestore-import-export
Firebase Console에 접속해서 Project Overview옆 톱니 > Project Settings > Service Accounts > Generate new private key
로 위 패키지에 물릴 액세스 토큰을 만든다. 이 키는 절대 공유하면 안된다. 키를 다운 받은 위치로 이동한다.
{private key file name}
부분에 아까 받은 키 파일 이름을 넣고 다음 명령어를 실행한다.
firestore-export --accountCredentials {private key file name}.json --backupFile output.json
output.json
에 데이터가 담겨져있다. 이걸 에뮬레이터 자체 기능으로 import할 수 는 없어서 아까 위에서 사용한 방법으로 일단은 import해야한다.
다른 기능이 오작동하지 않게, 우선 firestore 에뮬레이터만 단독으로 실행한다.
firebase emulators:start --only firestore
firestore 에뮬레이터 포트에 맞게 환경변수를 지정한다. (8081는 임의이므로 자신의 설정에 맞게)
export FIRESTORE_EMULATOR_HOST=0.0.0.0:8081
firestore 에뮬레이터에 데이터를 import한다.
firestore-import --accountCredentials {private key file name}.json --backupFile output.json
에뮬레이터가 직접 불러들일 수 있는 형태로 에뮬레이터를 백업할 수 있다.
firebase emulators:export ./emulators.backup
시작시 불러오기
firebase emulators:start --import=./emulators.backup
이제 다른 개발자에게는 firebase init emulators
로 설정했던대로 에뮬레이터를 설치하게 하고, 위의 커맨드를 빠르게 실행할 수 있도록 package.json
에 스크립트로 지정해주자.
--project demo-{name}
이 옵션을 줘서 demo project를 사용하게끔할 수 있다. 이렇게 하면 firebaseConfig을 사용하지 않아도 된다.
"local-server": "FIRESTORE_EMULATOR_HOST=localhost:8080 && firebase emulators:start --project demo-toilet --import=./emulators.backup",
개발환경에서 emulator를 참조하기 아래와 같은 식으로 firestore, auth등등 모듈마다 에뮬레이터를 사용하도록 설정할 수 있다.
const auth = firebase.auth();
auth.useEmulator("http://localhost:9099");
개발 환경일 때만 useEmulator
를 설정하도록 하면 된다.
firestore는 다음 설정을 해야한다.
firebaseDB.useEmulator('http://localhost', 8080);
firebaseDB.settings({
host: 'localhost:8080',
ssl: false,
});